package com.atguigu.jxc.controller;

import com.atguigu.jxc.domain.ServiceVO;
import com.atguigu.jxc.entity.Goods;
import com.atguigu.jxc.service.GoodsService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

/**
 * Created by IntelliJ IDEA.
 *
 * @Author 花鸟の虫鱼
 * @CreateDate 21/9/6 13:54
 * @Version 1.0
 * @Description TODO
 */
@RestController
@RequestMapping("/goods")
public class GoodsController {

    @Autowired
    private GoodsService goodsService;

    /**
     * 查询当前库存（可根据商品类别、商品编码或名称搜索）
     * 分页+分类显示、模糊岔村、编码查询
     * @return 返回库存查询结果
     */
    @RequestMapping("/list")
    public Map<String, Object> list(Integer page, Integer rows, String goodsName, Integer goodsTypeId) {
        return goodsService.selectlist(page,rows,goodsName,goodsTypeId);
    }

    /**
     * 查询当前库存（可根据商品类别、商品编码或名称搜索）
     * 分页+分类显示、模糊岔村、编码查询
     * @return 返回库存查询结果
     */
    @RequestMapping("/listAlarm")
    public Map<String, Object> listAlarm() {
        return goodsService.selectlistAlarm();
    }


    /**
     * 查询当前库存（可根据商品类别、商品编码或名称搜索）
     * 分页+分类显示、模糊岔村、编码查询
     * @return 返回库存查询结果
     */
    @RequestMapping("/listInventory")
    public Map<String, Object> listInventory(Integer page, Integer rows, String codeOrName, Integer goodsTypeId) {
        return goodsService.selectInventory(page,rows,codeOrName,goodsTypeId);
    }

    /**
     * 期初库存
     * 无库存商品列表展示
     * @return 返回无库存查询结果
     */
    @RequestMapping("/getNoInventoryQuantity")
    public Map<String, Object> getNoInventoryQuantity(Integer page, Integer rows, String nameOrCode) {
        return goodsService.selectNoInventoryQuantity(page,rows,nameOrCode);
    }

    /**
     * 期初库存
     * 有库存商品列表展示
     * @return 返回有库存查询结果
     */
    @RequestMapping("/getHasInventoryQuantity")
    public Map<String, Object> getHasInventoryQuantity(Integer page, Integer rows, String nameOrCode) {
        return goodsService.selectHasInventoryQuantity(page,rows,nameOrCode);
    }

    /**
     * 添加或修改角色信息
     * @param goods 供应商角色信息
     * @return
     */
    @RequestMapping("/saveStock")
    public ServiceVO save(Goods goods, @RequestParam(required = false) Integer goodsId) {
        goods.setGoodsId(goodsId);
        return goodsService.saveStock(goods);
    }

}
